package oj;

/**
 * @author 郝文雪
 * @date 2022/7/17 20:58
 * @Description 最佳股票买卖时机含冷冻期
 */
public class LC309 {
    public int maxProfit(int[] prices) {
        if(prices.length==0 || prices.length==1) return 0;
        int[][] dp=new int[prices.length+1][2];
        dp[0][0]=0;
        dp[0][1]=-prices[0];
        dp[1][0]=Math.max(dp[0][0],dp[0][1]+prices[1]);
        dp[1][1]=Math.max(dp[0][1],-prices[1]);
        for(int i=2;i<prices.length;i++){
            //不持有股票（1.前一天就不持有，今天不操作 2.前一天持有，今天卖出）
            dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]+prices[i]);
            //持有股票（1.前一天持有，今天不操作 2.因为本题含有冷冻期，所以如果是今天买入，那么只能从i-2天转移状态看最大收益，i-2天不持有，今天买入）
            dp[i][1]=Math.max(dp[i-1][1],dp[i-2][0]-prices[i]);
        }
        return dp[prices.length-1][0];
    }

}
